#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "input.h"
#include "simpleList.h"
#include "listcmp.h"

int main(int argc, char *argv[])
{
    struct  wordList *WL, WL2;
    struct Vector *Partial;
    struct Percentage Progress;
    char random_string[6];
    float percent = 0;

	// inicia o calculo do tempo gasto
	struct timeval t_zero, t_final;
	double delta_t;
	gettimeofday(&t_zero, NULL);
 
	// realiza a leitura do texto
    WL = readInput(argv[1]);
    Progress.total = WL->size;
    Progress.part = 0;
    
    while(1)
	{
        
        WL2 = *WL;

		// gera uma palavra aleatoria
        str_gen(random_string);
        
		// verifica se a palavra pertence ao  texto
        Partial = lstcmp(WL, random_string); 
        if(Partial == NULL) continue; 

		// junta as palavras
        glueChunks(WL, Partial, strlen(random_string));

		// limpa lista das palavras encontradas
        purgeWordList(WL);
                 
		// verifica se ainda existem palavras a serem encontradas
        if(WL->size == 0) break;

		// atualiza a porcentagem encontrada
        updateStatus(WL, &Progress); 
        freeVector(Partial);

        printf("\rProgress: %.0f%%", Progress.percent);
        fflush(stdout);        
        
    }
        
		// mostra o tempo
        gettimeofday(&t_final, NULL);
        delta_t = t_final.tv_sec - t_zero.tv_sec +
        ( t_final.tv_usec - t_zero.tv_usec ) / 1e6;
        printf("\n\nTempo = %.3lf segundos\n", delta_t);
    
        return 1;
}
